<?xml version="1.0" encoding="ascii"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
          "DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
  <title>simvoc.core.kernel.Simulator</title>
  <link rel="stylesheet" href="epydoc.css" type="text/css" />
  <script type="text/javascript" src="epydoc.js"></script>
</head>

<body bgcolor="white" text="black" link="blue" vlink="#204080"
      alink="#204080">
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
       bgcolor="#a0c0ff" cellspacing="0">
  <tr valign="middle">
  <!-- Home link -->
      <th>&nbsp;&nbsp;&nbsp;<a
        href="simvoc-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>

  <!-- Tree link -->
      <th>&nbsp;&nbsp;&nbsp;<a
        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>

  <!-- Index link -->
      <th>&nbsp;&nbsp;&nbsp;<a
        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>

  <!-- Help link -->
      <th>&nbsp;&nbsp;&nbsp;<a
        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>

  <!-- Project homepage -->
      <th class="navbar" align="right" width="100%">
        <table border="0" cellpadding="0" cellspacing="0">
          <tr><th class="navbar" align="center"
            >SimVOC</th>
          </tr></table></th>
  </tr>
</table>
<table width="100%" cellpadding="0" cellspacing="0">
  <tr valign="top">
    <td width="100%">
      <span class="breadcrumbs">
        <a href="simvoc-module.html">Package&nbsp;simvoc</a> ::
        <a href="simvoc.core-module.html">Package&nbsp;core</a> ::
        <a href="simvoc.core.kernel-module.html">Module&nbsp;kernel</a> ::
        Class&nbsp;Simulator
      </span>
    </td>
    <td>
      <table cellpadding="0" cellspacing="0">
        <!-- hide/show private -->
        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
    onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
      </table>
    </td>
  </tr>
</table>
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class Simulator</h1><p class="nomargin-top"><span class="codelink"><a href="simvoc.core.kernel-pysrc.html#Simulator">source&nbsp;code</a></span></p>
<center>
<center>  <map id="uml_class_diagram_for_simvoc_c_21" name="uml_class_diagram_for_simvoc_c_21">
<area shape="rect" id="node44" href="simvoc.core.kernel.Simulator-class.html#__init__" title="x.__init__(...) initializes x; see x.__class__.__doc__ for signature" alt="" coords="17,39,1387,57"/>
<area shape="rect" id="node44" href="simvoc.core.kernel.Simulator-class.html#debug_trigger" title="Activates or deactivates debugging messages, which are sent to the &#160;debugging stream specified in the constructor." alt="" coords="17,57,1387,76"/>
<area shape="rect" id="node44" href="simvoc.core.kernel.Simulator-class.html#set_auto_debug" title="Sets the automatic debugging trigger, which allows the simulator to &#160;activate debugging messages after a certain number of event loop iterations have executed, with only periodic events found in the queue." alt="" coords="17,76,1387,95"/>
<area shape="rect" id="node44" href="simvoc.core.kernel.Simulator-class.html#debug" title="Writes a message to the debug stream if debugging has been triggered." alt="" coords="17,95,1387,113"/>
<area shape="rect" id="node44" href="simvoc.core.kernel.Simulator-class.html#has_events" title="Returns: &#160;True iff the event queue is non&#45;empty" alt="" coords="17,113,1387,132"/>
<area shape="rect" id="node44" href="simvoc.core.kernel.Simulator-class.html#has_regular_events" title="Returns: &#160;True iff the event queue contains at least one regular event." alt="" coords="17,132,1387,151"/>
<area shape="rect" id="node44" href="simvoc.core.kernel.Simulator-class.html#cancel_event" title="Cancels a scheduled event that is waiting in the queue." alt="" coords="17,151,1387,169"/>
<area shape="rect" id="node44" href="simvoc.core.kernel.Simulator-class.html#add_event" title="Adds an event to the queue." alt="" coords="17,169,1387,188"/>
<area shape="rect" id="node44" href="simvoc.core.kernel.Simulator-class.html#new_event" title="Creates and schedules a new event" alt="" coords="17,188,1387,207"/>
<area shape="rect" id="node44" href="simvoc.core.kernel.Simulator-class.html#new_simple_event" title="Creates and schedules a new REGULAR event that invokes a simulator&#45;aware &#160;(non&#45;external) function." alt="" coords="17,207,1387,225"/>
<area shape="rect" id="node44" href="simvoc.core.kernel.Simulator-class.html#new_periodic_event" title="Creates and schedules a new PERIODIC event that invokes a simulator&#45;aware &#160;(non&#45;external) function." alt="" coords="17,225,1387,244"/>
<area shape="rect" id="node44" href="simvoc.core.kernel.Simulator-class.html#new_external_event" title="Creates and schedules a new REGULAR event that invokes an EXTERNAL (non &#160;simulator&#45;aware) function." alt="" coords="17,244,1387,263"/>
<area shape="rect" id="node44" href="simvoc.core.kernel.Simulator-class.html#get_queue_size" title="Returns: &#160;current queue size as viewed externally (i.e." alt="" coords="17,263,1387,281"/>
<area shape="rect" id="node44" href="simvoc.core.kernel.Simulator-class.html#run" title="Runs the main event loop and carries out the simulation." alt="" coords="17,300,1387,319"/>
<area shape="rect" id="node1" href="simvoc.core.kernel.Simulator-class.html" title="Core Simulator class, which provides an event&#45;driven discrete event simulation." alt="" coords="5,6,1397,325"/>
</map>
  <img src="uml_class_diagram_for_simvoc_c_21.gif" alt='' usemap="#uml_class_diagram_for_simvoc_c_21" ismap="ismap" class="graph-without-title" />
</center>
</center>
<hr />
<p>Core Simulator class, which provides an event-driven discrete event 
  simulation. Simulations using this simulator core will continue to run 
  until the event queue is empty. It is up to the client code to detect 
  when to stop scheduling periodic events, unless an infinite simulation is
  desired.</p>
  <p>The Simulator provides a source of randomness (using the Python random
  module) to client code. Centralizing the random source has the advantage 
  of allowing the pseudo-random generator to be seeded globally, providing 
  for repeatable results.</p>
  <p>During simulator execution, updates on the queue size and event rate 
  are periodically printed to stderr (default every second). Results of the
  simulation are sent to an output handler, while the simulator provides 
  trace data and final metadata to external functions.</p>
  <p>A debugging mechanism is included in the simulator. This mechanism 
  allows client code to send debugging messages, which can be printed or 
  sent to any open file-like object. To assist in debugging infinite 
  simulations, an adjustable automatic debugging trigger activates 
  debugging messages whenever the event queue contains only periodic events
  for a large number of consecutive iterations of the event loop.</p>

<!-- ==================== INSTANCE METHODS ==================== -->
<a name="section-InstanceMethods"></a>
<table class="summary" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
  <td colspan="2" class="table-header">
    <table border="0" cellpadding="0" cellspacing="0" width="100%">
      <tr valign="top">
        <td align="left"><span class="table-header">Instance Methods</span></td>
        <td align="right" valign="top"
         ><span class="options">[<a href="#section-InstanceMethods"
         class="privatelink" onclick="toggle_private();"
         >hide private</a>]</span></td>
      </tr>
    </table>
  </td>
</tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a href="simvoc.core.kernel.Simulator-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">start_clock</span>=<span class="summary-sig-default">0</span>,
        <span class="summary-sig-arg">output_handler</span>=<span class="summary-sig-default">StreamOutput()</span>,
        <span class="summary-sig-arg">event_queue</span>=<span class="summary-sig-default">None</span>,
        <span class="summary-sig-arg">report_interval</span>=<span class="summary-sig-default">1</span>,
        <span class="summary-sig-arg">ktrace</span>=<span class="summary-sig-default">&lt;function kernel_trace at 0x1edfaa0&gt;</span>,
        <span class="summary-sig-arg">kmeta</span>=<span class="summary-sig-default">&lt;function kernel_metadata at 0x1edfed8&gt;</span>,
        <span class="summary-sig-arg">rand_seed</span>=<span class="summary-sig-default">None</span>,
        <span class="summary-sig-arg">debug_fh</span>=<span class="summary-sig-default">sys.stdout</span>)</span><br />
      x.__init__(...) initializes x; see x.__class__.__doc__ for signature</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="simvoc.core.kernel-pysrc.html#Simulator.__init__">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a href="simvoc.core.kernel.Simulator-class.html#debug_trigger" class="summary-sig-name">debug_trigger</a>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">on</span>=<span class="summary-sig-default">True</span>)</span><br />
      Activates or deactivates debugging messages, which are sent to the 
      debugging stream specified in the constructor.</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="simvoc.core.kernel-pysrc.html#Simulator.debug_trigger">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a href="simvoc.core.kernel.Simulator-class.html#set_auto_debug" class="summary-sig-name">set_auto_debug</a>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">thresh</span>=<span class="summary-sig-default">10000</span>)</span><br />
      Sets the automatic debugging trigger, which allows the simulator to 
      activate debugging messages after a certain number of event loop 
      iterations have executed, with only periodic events found in the 
      queue.</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="simvoc.core.kernel-pysrc.html#Simulator.set_auto_debug">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a href="simvoc.core.kernel.Simulator-class.html#debug" class="summary-sig-name">debug</a>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">message</span>)</span><br />
      Writes a message to the debug stream if debugging has been triggered.</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="simvoc.core.kernel-pysrc.html#Simulator.debug">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">bool</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a href="simvoc.core.kernel.Simulator-class.html#has_events" class="summary-sig-name">has_events</a>(<span class="summary-sig-arg">self</span>)</span><br />
      Returns:
      True iff the event queue is non-empty</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="simvoc.core.kernel-pysrc.html#Simulator.has_events">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">bool</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a href="simvoc.core.kernel.Simulator-class.html#has_regular_events" class="summary-sig-name">has_regular_events</a>(<span class="summary-sig-arg">self</span>)</span><br />
      Returns:
      True iff the event queue contains at least one regular event.</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="simvoc.core.kernel-pysrc.html#Simulator.has_regular_events">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a href="simvoc.core.kernel.Simulator-class.html#cancel_event" class="summary-sig-name">cancel_event</a>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">evt</span>)</span><br />
      Cancels a scheduled event that is waiting in the queue.</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="simvoc.core.kernel-pysrc.html#Simulator.cancel_event">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a href="simvoc.core.kernel.Simulator-class.html#add_event" class="summary-sig-name">add_event</a>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">evt</span>)</span><br />
      Adds an event to the queue.</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="simvoc.core.kernel-pysrc.html#Simulator.add_event">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a href="simvoc.core.kernel.Simulator-class.html#new_event" class="summary-sig-name">new_event</a>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">act_time</span>,
        <span class="summary-sig-arg">regular</span>,
        <span class="summary-sig-arg">extern</span>,
        <span class="summary-sig-arg">fn</span>,
        <span class="summary-sig-arg">*args</span>,
        <span class="summary-sig-arg">**kwds</span>)</span><br />
      Creates and schedules a new event</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="simvoc.core.kernel-pysrc.html#Simulator.new_event">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a href="simvoc.core.kernel.Simulator-class.html#new_simple_event" class="summary-sig-name">new_simple_event</a>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">act_time</span>,
        <span class="summary-sig-arg">fn</span>,
        <span class="summary-sig-arg">*args</span>,
        <span class="summary-sig-arg">**kwds</span>)</span><br />
      Creates and schedules a new REGULAR event that invokes a 
      simulator-aware (non-external) function.</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="simvoc.core.kernel-pysrc.html#Simulator.new_simple_event">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a href="simvoc.core.kernel.Simulator-class.html#new_periodic_event" class="summary-sig-name">new_periodic_event</a>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">act_time</span>,
        <span class="summary-sig-arg">fn</span>,
        <span class="summary-sig-arg">*args</span>,
        <span class="summary-sig-arg">**kwds</span>)</span><br />
      Creates and schedules a new PERIODIC event that invokes a 
      simulator-aware (non-external) function.</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="simvoc.core.kernel-pysrc.html#Simulator.new_periodic_event">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a href="simvoc.core.kernel.Simulator-class.html#new_external_event" class="summary-sig-name">new_external_event</a>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">act_time</span>,
        <span class="summary-sig-arg">fn</span>,
        <span class="summary-sig-arg">*args</span>,
        <span class="summary-sig-arg">**kwds</span>)</span><br />
      Creates and schedules a new REGULAR event that invokes an EXTERNAL 
      (non simulator-aware) function.</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="simvoc.core.kernel-pysrc.html#Simulator.new_external_event">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">int</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a href="simvoc.core.kernel.Simulator-class.html#get_queue_size" class="summary-sig-name">get_queue_size</a>(<span class="summary-sig-arg">self</span>)</span><br />
      Returns:
      current queue size as viewed externally (i.e.</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="simvoc.core.kernel-pysrc.html#Simulator.get_queue_size">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">int</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a href="simvoc.core.kernel.Simulator-class.html#get_waiting_size" class="summary-sig-name">get_waiting_size</a>(<span class="summary-sig-arg">self</span>)</span><br />
      Returns:
      current number of events waiting in the event queue, not counting any
      event that is currently processing</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="simvoc.core.kernel-pysrc.html#Simulator.get_waiting_size">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a href="simvoc.core.kernel.Simulator-class.html#get_status" class="summary-sig-name">get_status</a>(<span class="summary-sig-arg">self</span>)</span><br />
      Returns:
      a tuple (time, queue_size, num_processed) with status information 
      (current time, current queue size as viewed externally, and total 
      number of events processed)</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="simvoc.core.kernel-pysrc.html#Simulator.get_status">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a href="simvoc.core.kernel.Simulator-class.html#get_output_handler" class="summary-sig-name">get_output_handler</a>(<span class="summary-sig-arg">self</span>)</span><br />
      Returns:
      a reference to the output handler to which results are sent.</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="simvoc.core.kernel-pysrc.html#Simulator.get_output_handler">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a href="simvoc.core.kernel.Simulator-class.html#get_stats" class="summary-sig-name">get_stats</a>(<span class="summary-sig-arg">self</span>)</span><br />
      Returns:
      a tuple of statistics: (processed, walltime), where processed is the 
      total number of events processed, and walltime is the elapsed actual 
      time from simulation start to completion.</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="simvoc.core.kernel-pysrc.html#Simulator.get_stats">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">number</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a href="simvoc.core.kernel.Simulator-class.html#get_time" class="summary-sig-name">get_time</a>(<span class="summary-sig-arg">self</span>)</span><br />
      Returns:
      current simulated time</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="simvoc.core.kernel-pysrc.html#Simulator.get_time">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a href="simvoc.core.kernel.Simulator-class.html#get_timestamp" class="summary-sig-name">get_timestamp</a>(<span class="summary-sig-arg">self</span>)</span><br />
      Returns:
      a tuple containing the current simulated time: (actual, relative) 
      where actual is the current time (as reported by the get_time() 
      method) and relative is the simulated time elapsed from the current 
      time and starting clock time.</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="simvoc.core.kernel-pysrc.html#Simulator.get_timestamp">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a href="simvoc.core.kernel.Simulator-class.html#set_start_clock" class="summary-sig-name">set_start_clock</a>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">clock</span>)</span><br />
      Sets the simulator start clock after object creation.</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="simvoc.core.kernel-pysrc.html#Simulator.set_start_clock">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a href="simvoc.core.kernel.Simulator-class.html#add_result" class="summary-sig-name">add_result</a>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">result</span>)</span><br />
      Sends a result to the output handler.</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="simvoc.core.kernel-pysrc.html#Simulator.add_result">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a href="simvoc.core.kernel.Simulator-class.html#run" class="summary-sig-name">run</a>(<span class="summary-sig-arg">self</span>)</span><br />
      Runs the main event loop and carries out the simulation.</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="simvoc.core.kernel-pysrc.html#Simulator.run">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
  <tr>
    <td colspan="2" class="summary">
    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
      <code>__delattr__</code>,
      <code>__format__</code>,
      <code>__getattribute__</code>,
      <code>__hash__</code>,
      <code>__new__</code>,
      <code>__reduce__</code>,
      <code>__reduce_ex__</code>,
      <code>__repr__</code>,
      <code>__setattr__</code>,
      <code>__sizeof__</code>,
      <code>__str__</code>,
      <code>__subclasshook__</code>
      </p>
    </td>
  </tr>
</table>
<!-- ==================== PROPERTIES ==================== -->
<a name="section-Properties"></a>
<table class="summary" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
  <td colspan="2" class="table-header">
    <table border="0" cellpadding="0" cellspacing="0" width="100%">
      <tr valign="top">
        <td align="left"><span class="table-header">Properties</span></td>
        <td align="right" valign="top"
         ><span class="options">[<a href="#section-Properties"
         class="privatelink" onclick="toggle_private();"
         >hide private</a>]</span></td>
      </tr>
    </table>
  </td>
</tr>
  <tr>
    <td colspan="2" class="summary">
    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
      <code>__class__</code>
      </p>
    </td>
  </tr>
</table>
<!-- ==================== METHOD DETAILS ==================== -->
<a name="section-MethodDetails"></a>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
  <td colspan="2" class="table-header">
    <table border="0" cellpadding="0" cellspacing="0" width="100%">
      <tr valign="top">
        <td align="left"><span class="table-header">Method Details</span></td>
        <td align="right" valign="top"
         ><span class="options">[<a href="#section-MethodDetails"
         class="privatelink" onclick="toggle_private();"
         >hide private</a>]</span></td>
      </tr>
    </table>
  </td>
</tr>
</table>
<a name="__init__"></a>
<div>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <table width="100%" cellpadding="0" cellspacing="0" border="0">
  <tr valign="top"><td>
  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
        <span class="sig-arg">start_clock</span>=<span class="sig-default">0</span>,
        <span class="sig-arg">output_handler</span>=<span class="sig-default">StreamOutput()</span>,
        <span class="sig-arg">event_queue</span>=<span class="sig-default">None</span>,
        <span class="sig-arg">report_interval</span>=<span class="sig-default">1</span>,
        <span class="sig-arg">ktrace</span>=<span class="sig-default">&lt;function kernel_trace at 0x1edfaa0&gt;</span>,
        <span class="sig-arg">kmeta</span>=<span class="sig-default">&lt;function kernel_metadata at 0x1edfed8&gt;</span>,
        <span class="sig-arg">rand_seed</span>=<span class="sig-default">None</span>,
        <span class="sig-arg">debug_fh</span>=<span class="sig-default">sys.stdout</span>)</span>
    <br /><em class="fname">(Constructor)</em>
  </h3>
  </td><td align="right" valign="top"
    ><span class="codelink"><a href="simvoc.core.kernel-pysrc.html#Simulator.__init__">source&nbsp;code</a></span>&nbsp;
    </td>
  </tr></table>
  
  <p>x.__init__(...) initializes x; see x.__class__.__doc__ for 
  signature</p>
  <dl class="fields">
    <dt>Parameters:</dt>
    <dd><ul class="nomargin-top">
        <li><strong class="pname"><code>start_clock</code></strong> (number) - Initial simulator clock value</li>
        <li><strong class="pname"><code>output_handler</code></strong> - Output instance to which results will be sent. If desired, output
          handlers may be chained together to form a pipeline, in which 
          case the first output handler in the pipeline should be used 
          here.</li>
        <li><strong class="pname"><code>event_queue</code></strong> - Event queue to use with the simulator. This queue may be 
          populated in advance. If unspecified, a new, empty event queue 
          will be created.</li>
        <li><strong class="pname"><code>report_interval</code></strong> (int) - Interval (seconds) between trace reports, which are both printed 
          to stderr and send to the ktrace function</li>
        <li><strong class="pname"><code>ktrace</code></strong> - Function to which trace reports are sent</li>
        <li><strong class="pname"><code>kmeta</code></strong> - Function to which execution metadata is sent at the conclusion of
          a simulation</li>
        <li><strong class="pname"><code>rand_seed</code></strong> - Random seed (any hashable object). If unspecified or None, the 
          RNG will be seeded using the system clock or operating system 
          random source. See the documentation for the Python random module
          for more details.</li>
        <li><strong class="pname"><code>debug_fh</code></strong> - Open file handle (w mode) for debugging messages</li>
    </ul></dd>
    <dt>Overrides:
        object.__init__
    </dt>
  </dl>
</td></tr></table>
</div>
<a name="debug_trigger"></a>
<div>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <table width="100%" cellpadding="0" cellspacing="0" border="0">
  <tr valign="top"><td>
  <h3 class="epydoc"><span class="sig"><span class="sig-name">debug_trigger</span>(<span class="sig-arg">self</span>,
        <span class="sig-arg">on</span>=<span class="sig-default">True</span>)</span>
  </h3>
  </td><td align="right" valign="top"
    ><span class="codelink"><a href="simvoc.core.kernel-pysrc.html#Simulator.debug_trigger">source&nbsp;code</a></span>&nbsp;
    </td>
  </tr></table>
  
  <p>Activates or deactivates debugging messages, which are sent to the 
  debugging stream specified in the constructor.</p>
  <dl class="fields">
    <dt>Parameters:</dt>
    <dd><ul class="nomargin-top">
        <li><strong class="pname"><code>on</code></strong> (bool) - Flag specifying whether or not debug messages are enabled</li>
    </ul></dd>
  </dl>
</td></tr></table>
</div>
<a name="set_auto_debug"></a>
<div>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <table width="100%" cellpadding="0" cellspacing="0" border="0">
  <tr valign="top"><td>
  <h3 class="epydoc"><span class="sig"><span class="sig-name">set_auto_debug</span>(<span class="sig-arg">self</span>,
        <span class="sig-arg">thresh</span>=<span class="sig-default">10000</span>)</span>
  </h3>
  </td><td align="right" valign="top"
    ><span class="codelink"><a href="simvoc.core.kernel-pysrc.html#Simulator.set_auto_debug">source&nbsp;code</a></span>&nbsp;
    </td>
  </tr></table>
  
  <p>Sets the automatic debugging trigger, which allows the simulator to 
  activate debugging messages after a certain number of event loop 
  iterations have executed, with only periodic events found in the queue. 
  This mechanism is a heuristic to aid in the debugging of runaway 
  simulations. Set the threshold value to a number less than 1 to 
  deactivate the automatic trigger.</p>
  <dl class="fields">
    <dt>Parameters:</dt>
    <dd><ul class="nomargin-top">
        <li><strong class="pname"><code>thresh</code></strong> (int) - Debugging threshold value</li>
    </ul></dd>
  </dl>
</td></tr></table>
</div>
<a name="debug"></a>
<div>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <table width="100%" cellpadding="0" cellspacing="0" border="0">
  <tr valign="top"><td>
  <h3 class="epydoc"><span class="sig"><span class="sig-name">debug</span>(<span class="sig-arg">self</span>,
        <span class="sig-arg">message</span>)</span>
  </h3>
  </td><td align="right" valign="top"
    ><span class="codelink"><a href="simvoc.core.kernel-pysrc.html#Simulator.debug">source&nbsp;code</a></span>&nbsp;
    </td>
  </tr></table>
  
  <p>Writes a message to the debug stream if debugging has been 
  triggered.</p>
  <dl class="fields">
    <dt>Parameters:</dt>
    <dd><ul class="nomargin-top">
        <li><strong class="pname"><code>message</code></strong> - Message to be written</li>
    </ul></dd>
  </dl>
</td></tr></table>
</div>
<a name="has_events"></a>
<div>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <table width="100%" cellpadding="0" cellspacing="0" border="0">
  <tr valign="top"><td>
  <h3 class="epydoc"><span class="sig"><span class="sig-name">has_events</span>(<span class="sig-arg">self</span>)</span>
  </h3>
  </td><td align="right" valign="top"
    ><span class="codelink"><a href="simvoc.core.kernel-pysrc.html#Simulator.has_events">source&nbsp;code</a></span>&nbsp;
    </td>
  </tr></table>
  
  
  <dl class="fields">
    <dt>Returns: bool</dt>
        <dd>True iff the event queue is non-empty</dd>
  </dl>
</td></tr></table>
</div>
<a name="has_regular_events"></a>
<div>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <table width="100%" cellpadding="0" cellspacing="0" border="0">
  <tr valign="top"><td>
  <h3 class="epydoc"><span class="sig"><span class="sig-name">has_regular_events</span>(<span class="sig-arg">self</span>)</span>
  </h3>
  </td><td align="right" valign="top"
    ><span class="codelink"><a href="simvoc.core.kernel-pysrc.html#Simulator.has_regular_events">source&nbsp;code</a></span>&nbsp;
    </td>
  </tr></table>
  
  
  <dl class="fields">
    <dt>Returns: bool</dt>
        <dd>True iff the event queue contains at least one regular event. 
          Periodic events will not be counted, allowing the client code to 
          detect an &quot;end of input&quot; condition and cease scheduling
          periodic events.</dd>
  </dl>
</td></tr></table>
</div>
<a name="cancel_event"></a>
<div>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <table width="100%" cellpadding="0" cellspacing="0" border="0">
  <tr valign="top"><td>
  <h3 class="epydoc"><span class="sig"><span class="sig-name">cancel_event</span>(<span class="sig-arg">self</span>,
        <span class="sig-arg">evt</span>)</span>
  </h3>
  </td><td align="right" valign="top"
    ><span class="codelink"><a href="simvoc.core.kernel-pysrc.html#Simulator.cancel_event">source&nbsp;code</a></span>&nbsp;
    </td>
  </tr></table>
  
  <p>Cancels a scheduled event that is waiting in the queue. If the event 
  is not found in the queue, an Exception will be raised. Upon 
  cancellation, the event will be marked as activated, so that periodic 
  scheduling code behaves properly.</p>
  <dl class="fields">
    <dt>Parameters:</dt>
    <dd><ul class="nomargin-top">
        <li><strong class="pname"><code>evt</code></strong> - Event to cancel</li>
    </ul></dd>
  </dl>
</td></tr></table>
</div>
<a name="add_event"></a>
<div>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <table width="100%" cellpadding="0" cellspacing="0" border="0">
  <tr valign="top"><td>
  <h3 class="epydoc"><span class="sig"><span class="sig-name">add_event</span>(<span class="sig-arg">self</span>,
        <span class="sig-arg">evt</span>)</span>
  </h3>
  </td><td align="right" valign="top"
    ><span class="codelink"><a href="simvoc.core.kernel-pysrc.html#Simulator.add_event">source&nbsp;code</a></span>&nbsp;
    </td>
  </tr></table>
  
  <p>Adds an event to the queue. Events must not specify an activation time
  earlier than the current simulated time, or a TimeTravelException will be
  raised.</p>
  <dl class="fields">
    <dt>Parameters:</dt>
    <dd><ul class="nomargin-top">
        <li><strong class="pname"><code>evt</code></strong> - Event to be added to the queue</li>
    </ul></dd>
    <dt>Returns:</dt>
        <dd>reference to the newly added event</dd>
  </dl>
</td></tr></table>
</div>
<a name="new_event"></a>
<div>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <table width="100%" cellpadding="0" cellspacing="0" border="0">
  <tr valign="top"><td>
  <h3 class="epydoc"><span class="sig"><span class="sig-name">new_event</span>(<span class="sig-arg">self</span>,
        <span class="sig-arg">act_time</span>,
        <span class="sig-arg">regular</span>,
        <span class="sig-arg">extern</span>,
        <span class="sig-arg">fn</span>,
        <span class="sig-arg">*args</span>,
        <span class="sig-arg">**kwds</span>)</span>
  </h3>
  </td><td align="right" valign="top"
    ><span class="codelink"><a href="simvoc.core.kernel-pysrc.html#Simulator.new_event">source&nbsp;code</a></span>&nbsp;
    </td>
  </tr></table>
  
  <p>Creates and schedules a new event</p>
  <dl class="fields">
    <dt>Parameters:</dt>
    <dd><ul class="nomargin-top">
        <li><strong class="pname"><code>act_time</code></strong> (number) - Event activation time</li>
        <li><strong class="pname"><code>regular</code></strong> (bool) - specifies whether event is regular or periodic</li>
        <li><strong class="pname"><code>extern</code></strong> (bool) - specifies whether event is external to the simulator or is 
          simulator-aware</li>
        <li><strong class="pname"><code>fn</code></strong> - Function to be called when the event activates</li>
        <li><strong class="pname"><code>args</code></strong> - Arguments to be passed (in order) to the function</li>
        <li><strong class="pname"><code>kwds</code></strong> - Keywods to be passed to the function</li>
    </ul></dd>
    <dt>Returns:</dt>
        <dd>reference to the newly added event</dd>
  </dl>
</td></tr></table>
</div>
<a name="new_simple_event"></a>
<div>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <table width="100%" cellpadding="0" cellspacing="0" border="0">
  <tr valign="top"><td>
  <h3 class="epydoc"><span class="sig"><span class="sig-name">new_simple_event</span>(<span class="sig-arg">self</span>,
        <span class="sig-arg">act_time</span>,
        <span class="sig-arg">fn</span>,
        <span class="sig-arg">*args</span>,
        <span class="sig-arg">**kwds</span>)</span>
  </h3>
  </td><td align="right" valign="top"
    ><span class="codelink"><a href="simvoc.core.kernel-pysrc.html#Simulator.new_simple_event">source&nbsp;code</a></span>&nbsp;
    </td>
  </tr></table>
  
  <p>Creates and schedules a new REGULAR event that invokes a 
  simulator-aware (non-external) function. The first two arguments to the 
  function will be the current simulated time and a reference to the 
  Simulator itself.</p>
  <dl class="fields">
    <dt>Parameters:</dt>
    <dd><ul class="nomargin-top">
        <li><strong class="pname"><code>act_time</code></strong> (number) - Event activation time</li>
        <li><strong class="pname"><code>fn</code></strong> - Function to be called when the event activates</li>
        <li><strong class="pname"><code>args</code></strong> - Arguments to be passed (in order) to the function</li>
        <li><strong class="pname"><code>kwds</code></strong> - Keywods to be passed to the function</li>
    </ul></dd>
    <dt>Returns:</dt>
        <dd>reference to the newly added event</dd>
  </dl>
</td></tr></table>
</div>
<a name="new_periodic_event"></a>
<div>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <table width="100%" cellpadding="0" cellspacing="0" border="0">
  <tr valign="top"><td>
  <h3 class="epydoc"><span class="sig"><span class="sig-name">new_periodic_event</span>(<span class="sig-arg">self</span>,
        <span class="sig-arg">act_time</span>,
        <span class="sig-arg">fn</span>,
        <span class="sig-arg">*args</span>,
        <span class="sig-arg">**kwds</span>)</span>
  </h3>
  </td><td align="right" valign="top"
    ><span class="codelink"><a href="simvoc.core.kernel-pysrc.html#Simulator.new_periodic_event">source&nbsp;code</a></span>&nbsp;
    </td>
  </tr></table>
  
  <p>Creates and schedules a new PERIODIC event that invokes a 
  simulator-aware (non-external) function. The first two arguments to the 
  function will be the current simulated time and a reference to the 
  Simulator itself.</p>
  <dl class="fields">
    <dt>Parameters:</dt>
    <dd><ul class="nomargin-top">
        <li><strong class="pname"><code>act_time</code></strong> (number) - Event activation time</li>
        <li><strong class="pname"><code>fn</code></strong> - Function to be called when the event activates</li>
        <li><strong class="pname"><code>args</code></strong> - Arguments to be passed (in order) to the function</li>
        <li><strong class="pname"><code>kwds</code></strong> - Keywods to be passed to the function</li>
    </ul></dd>
    <dt>Returns:</dt>
        <dd>reference to the newly added event</dd>
  </dl>
</td></tr></table>
</div>
<a name="new_external_event"></a>
<div>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <table width="100%" cellpadding="0" cellspacing="0" border="0">
  <tr valign="top"><td>
  <h3 class="epydoc"><span class="sig"><span class="sig-name">new_external_event</span>(<span class="sig-arg">self</span>,
        <span class="sig-arg">act_time</span>,
        <span class="sig-arg">fn</span>,
        <span class="sig-arg">*args</span>,
        <span class="sig-arg">**kwds</span>)</span>
  </h3>
  </td><td align="right" valign="top"
    ><span class="codelink"><a href="simvoc.core.kernel-pysrc.html#Simulator.new_external_event">source&nbsp;code</a></span>&nbsp;
    </td>
  </tr></table>
  
  <p>Creates and schedules a new REGULAR event that invokes an EXTERNAL 
  (non simulator-aware) function. The current time and simulator reference 
  will NOT be passed to the function.</p>
  <dl class="fields">
    <dt>Parameters:</dt>
    <dd><ul class="nomargin-top">
        <li><strong class="pname"><code>act_time</code></strong> (number) - Event activation time</li>
        <li><strong class="pname"><code>fn</code></strong> - Function to be called when the event activates</li>
        <li><strong class="pname"><code>args</code></strong> - Arguments to be passed (in order) to the function</li>
        <li><strong class="pname"><code>kwds</code></strong> - Keywods to be passed to the function</li>
    </ul></dd>
    <dt>Returns:</dt>
        <dd>reference to the newly added event</dd>
  </dl>
</td></tr></table>
</div>
<a name="get_queue_size"></a>
<div>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <table width="100%" cellpadding="0" cellspacing="0" border="0">
  <tr valign="top"><td>
  <h3 class="epydoc"><span class="sig"><span class="sig-name">get_queue_size</span>(<span class="sig-arg">self</span>)</span>
  </h3>
  </td><td align="right" valign="top"
    ><span class="codelink"><a href="simvoc.core.kernel-pysrc.html#Simulator.get_queue_size">source&nbsp;code</a></span>&nbsp;
    </td>
  </tr></table>
  
  
  <dl class="fields">
    <dt>Returns: int</dt>
        <dd>current queue size as viewed externally (i.e. add 1 if an event 
          is currently processing, even though that event has been removed 
          from the actual queue structure)</dd>
  </dl>
</td></tr></table>
</div>
<a name="get_waiting_size"></a>
<div>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <table width="100%" cellpadding="0" cellspacing="0" border="0">
  <tr valign="top"><td>
  <h3 class="epydoc"><span class="sig"><span class="sig-name">get_waiting_size</span>(<span class="sig-arg">self</span>)</span>
  </h3>
  </td><td align="right" valign="top"
    ><span class="codelink"><a href="simvoc.core.kernel-pysrc.html#Simulator.get_waiting_size">source&nbsp;code</a></span>&nbsp;
    </td>
  </tr></table>
  
  
  <dl class="fields">
    <dt>Returns: int</dt>
        <dd>current number of events waiting in the event queue, not counting
          any event that is currently processing</dd>
  </dl>
</td></tr></table>
</div>
<a name="get_status"></a>
<div>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <table width="100%" cellpadding="0" cellspacing="0" border="0">
  <tr valign="top"><td>
  <h3 class="epydoc"><span class="sig"><span class="sig-name">get_status</span>(<span class="sig-arg">self</span>)</span>
  </h3>
  </td><td align="right" valign="top"
    ><span class="codelink"><a href="simvoc.core.kernel-pysrc.html#Simulator.get_status">source&nbsp;code</a></span>&nbsp;
    </td>
  </tr></table>
  
  
  <dl class="fields">
    <dt>Returns:</dt>
        <dd>a tuple (time, queue_size, num_processed) with status information
          (current time, current queue size as viewed externally, and total
          number of events processed)</dd>
  </dl>
</td></tr></table>
</div>
<a name="get_output_handler"></a>
<div>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <table width="100%" cellpadding="0" cellspacing="0" border="0">
  <tr valign="top"><td>
  <h3 class="epydoc"><span class="sig"><span class="sig-name">get_output_handler</span>(<span class="sig-arg">self</span>)</span>
  </h3>
  </td><td align="right" valign="top"
    ><span class="codelink"><a href="simvoc.core.kernel-pysrc.html#Simulator.get_output_handler">source&nbsp;code</a></span>&nbsp;
    </td>
  </tr></table>
  
  
  <dl class="fields">
    <dt>Returns:</dt>
        <dd>a reference to the output handler to which results are sent. If a
          pipeline of output handlers is used, the return value will be a 
          reference to the first handler in the pipeline.</dd>
  </dl>
</td></tr></table>
</div>
<a name="get_stats"></a>
<div>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <table width="100%" cellpadding="0" cellspacing="0" border="0">
  <tr valign="top"><td>
  <h3 class="epydoc"><span class="sig"><span class="sig-name">get_stats</span>(<span class="sig-arg">self</span>)</span>
  </h3>
  </td><td align="right" valign="top"
    ><span class="codelink"><a href="simvoc.core.kernel-pysrc.html#Simulator.get_stats">source&nbsp;code</a></span>&nbsp;
    </td>
  </tr></table>
  
  
  <dl class="fields">
    <dt>Returns:</dt>
        <dd>a tuple of statistics: (processed, walltime), where processed is 
          the total number of events processed, and walltime is the elapsed
          actual time from simulation start to completion. This method is 
          intended to be called only after the simulator main loop has 
          finished.</dd>
  </dl>
</td></tr></table>
</div>
<a name="get_time"></a>
<div>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <table width="100%" cellpadding="0" cellspacing="0" border="0">
  <tr valign="top"><td>
  <h3 class="epydoc"><span class="sig"><span class="sig-name">get_time</span>(<span class="sig-arg">self</span>)</span>
  </h3>
  </td><td align="right" valign="top"
    ><span class="codelink"><a href="simvoc.core.kernel-pysrc.html#Simulator.get_time">source&nbsp;code</a></span>&nbsp;
    </td>
  </tr></table>
  
  
  <dl class="fields">
    <dt>Returns: number</dt>
        <dd>current simulated time</dd>
  </dl>
</td></tr></table>
</div>
<a name="get_timestamp"></a>
<div>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <table width="100%" cellpadding="0" cellspacing="0" border="0">
  <tr valign="top"><td>
  <h3 class="epydoc"><span class="sig"><span class="sig-name">get_timestamp</span>(<span class="sig-arg">self</span>)</span>
  </h3>
  </td><td align="right" valign="top"
    ><span class="codelink"><a href="simvoc.core.kernel-pysrc.html#Simulator.get_timestamp">source&nbsp;code</a></span>&nbsp;
    </td>
  </tr></table>
  
  
  <dl class="fields">
    <dt>Returns:</dt>
        <dd>a tuple containing the current simulated time: (actual, relative)
          where actual is the current time (as reported by the get_time() 
          method) and relative is the simulated time elapsed from the 
          current time and starting clock time. These values will be 
          identical when the starting clock time is zero.</dd>
  </dl>
</td></tr></table>
</div>
<a name="set_start_clock"></a>
<div>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <table width="100%" cellpadding="0" cellspacing="0" border="0">
  <tr valign="top"><td>
  <h3 class="epydoc"><span class="sig"><span class="sig-name">set_start_clock</span>(<span class="sig-arg">self</span>,
        <span class="sig-arg">clock</span>)</span>
  </h3>
  </td><td align="right" valign="top"
    ><span class="codelink"><a href="simvoc.core.kernel-pysrc.html#Simulator.set_start_clock">source&nbsp;code</a></span>&nbsp;
    </td>
  </tr></table>
  
  <p>Sets the simulator start clock after object creation. This method may 
  be called only before the simulator has been started, or an Exception 
  will be raised. The activation times of any events already in the queue 
  will be adjusted according to the new clock setting.</p>
  <dl class="fields">
    <dt>Parameters:</dt>
    <dd><ul class="nomargin-top">
        <li><strong class="pname"><code>clock</code></strong> (number) - New simulation start time</li>
    </ul></dd>
  </dl>
</td></tr></table>
</div>
<a name="add_result"></a>
<div>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <table width="100%" cellpadding="0" cellspacing="0" border="0">
  <tr valign="top"><td>
  <h3 class="epydoc"><span class="sig"><span class="sig-name">add_result</span>(<span class="sig-arg">self</span>,
        <span class="sig-arg">result</span>)</span>
  </h3>
  </td><td align="right" valign="top"
    ><span class="codelink"><a href="simvoc.core.kernel-pysrc.html#Simulator.add_result">source&nbsp;code</a></span>&nbsp;
    </td>
  </tr></table>
  
  <p>Sends a result to the output handler. Results may be stand-alone 
  objects (or primitives) or collections, where is a collection of results 
  is a 1-tuple containing a list or tuple of results. Collections may be 
  nested.</p>
  <dl class="fields">
    <dt>Parameters:</dt>
    <dd><ul class="nomargin-top">
        <li><strong class="pname"><code>result</code></strong> - Result or collection to send to the output handler</li>
    </ul></dd>
  </dl>
</td></tr></table>
</div>
<a name="run"></a>
<div>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <table width="100%" cellpadding="0" cellspacing="0" border="0">
  <tr valign="top"><td>
  <h3 class="epydoc"><span class="sig"><span class="sig-name">run</span>(<span class="sig-arg">self</span>)</span>
  </h3>
  </td><td align="right" valign="top"
    ><span class="codelink"><a href="simvoc.core.kernel-pysrc.html#Simulator.run">source&nbsp;code</a></span>&nbsp;
    </td>
  </tr></table>
  
  <p>Runs the main event loop and carries out the simulation. This method 
  is synchronous and will not return until the simulation finishes.</p>
  <dl class="fields">
  </dl>
</td></tr></table>
</div>
<br />
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
       bgcolor="#a0c0ff" cellspacing="0">
  <tr valign="middle">
  <!-- Home link -->
      <th>&nbsp;&nbsp;&nbsp;<a
        href="simvoc-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>

  <!-- Tree link -->
      <th>&nbsp;&nbsp;&nbsp;<a
        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>

  <!-- Index link -->
      <th>&nbsp;&nbsp;&nbsp;<a
        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>

  <!-- Help link -->
      <th>&nbsp;&nbsp;&nbsp;<a
        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>

  <!-- Project homepage -->
      <th class="navbar" align="right" width="100%">
        <table border="0" cellpadding="0" cellspacing="0">
          <tr><th class="navbar" align="center"
            >SimVOC</th>
          </tr></table></th>
  </tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
  <tr>
    <td align="left" class="footer">
    Generated by Epydoc 3.0 on Fri Oct 23 11:04:31 2009
    </td>
    <td align="right" class="footer">
      <a target="mainFrame" href="http://epydoc.sourceforge.net"
        >http://epydoc.sourceforge.net</a>
    </td>
  </tr>
</table>

<script type="text/javascript">
  <!--
  // Private objects are initially displayed (because if
  // javascript is turned off then we want them to be
  // visible); but by default, we want to hide them.  So hide
  // them unless we have a cookie that says to show them.
  checkCookie();
  // -->
</script>
</body>
</html>
